package qgs.zisu.javaconcurrency.javaconcurrency.chapter6_forceOrGracefulClose;

/**
 * @Author: 蔡翔
 * @Date: 2019/9/25 9:07
 * @Version 1.0
 */
public class ThreadInterrupt2 {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(){
            @Override
            public void run(){
                while (true){

                }
            }
        };
        t.start();

        Thread main = Thread.currentThread();

        Thread t2 = new Thread(){
            @Override
            public void run(){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // t2 线程把t 线程打断掉。打断的是t线程。
                t.interrupt();
                System.out.println ("t had interrupted");
            }
        };
        t2.start();


        try {
            //这里执行 t.join 的是main 线程。所以你把t线程interrupt，t线程在while 循环的时候会报一个异常但是并不影响 t 的剩余whlie循环执行
            // 所以在main线程里面执行 t.join并不会出现异常，因为它（t.join()）一直没有执行。所以不可能有异常。
            t.join();
        }catch (InterruptedException e){
            e.printStackTrace();
        }

    }
}
